package com.xyrl.third.baidu.util;

import org.apache.tomcat.util.codec.binary.Base64;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Objects;

public class ImageToBase64 {

    private static String strNetImageToBase64;

    public static void main(String[] args) {
//        //第一个:把网络图片装换成Base64
//        String netImagePath = "网络图片路径";
//        //下面是网络图片转换Base64的方法
//        NetImageToBase64(netImagePath);

        //下面是本地图片转换Base64的方法
        String imagePath = "e:\\psu.jpg";
        System.out.println(imageToBase64(imagePath));
    }


    /**
     * 图片转换Base64的方法
     *
     * @param in 流文件     
     */

    public static String imageToBase64(InputStream in) {
        byte[] data = null;
        // 读取图片字节数组
        try {
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 对字节数组Base64编码
        Base64 encoder = new Base64();
        // 返回Base64编码过的字节数组字符串
        return new String(encoder.encode(Objects.requireNonNull(data)));
    }

    /**
     * 本地图片转换Base64的方法
     *
     * @param imgPath     
     */

    public static String imageToBase64(String imgPath) {
        byte[] data = null;
        // 读取图片字节数组
        try {
            InputStream in = new FileInputStream(imgPath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 对字节数组Base64编码
        Base64 encoder = new Base64();
        // 返回Base64编码过的字节数组字符串
        return new String(encoder.encode(Objects.requireNonNull(data)));
    }
}
